//
// Created by Zhangwj on 2023/9/27.
//

#include "LValNode.h"

std::unique_ptr<LValNode> LValNode::LValParser(Parser &parser) {
    // LVal → Ident {'[' Exp ']'}
    std::unique_ptr<LValNode> lValNode = std::make_unique<LValNode>();
    lValNode->Ident = IdentNode::IdentParser(parser);
    while (parser.getLexType(0) == LexType::LBRACK) {
        parser.next();
        lValNode->Exps.push_back(ExpNode::ExpParser(parser));
        if (parser.getLexType(0) == LexType::RBRACK) {
            parser.next();
        }
    }
    return lValNode;
}
